package 寒食君的锁;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author zc
 * @version 1.0
 * @date 2021/9/14 14:37
 */
public class Main {

    //static Integer num = 0 ;


    //【使用乐观锁】
    static AtomicInteger num = new AtomicInteger(0); //初试CAS
    public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {

            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                        while (num.get() < 1000) {
                            System.out.println("thread name:" + Thread.currentThread().getName() + ":" + num.incrementAndGet());
                        }


                }
            });
            thread.start();
        }
    }



    //【使用悲观锁】
//    public static void main(String[] args) {
//        for (int i = 0; i < 3; i++) {
//
//            Thread thread = new Thread(new Runnable() {
//                @Override
//                public void run() {
//                    synchronized (Main.class){
//                        while (num < 1000) {
//                            System.out.println("thread name:" + Thread.currentThread().getName() + ":" + num++);
//                        }
//                    }
//
//                }
//            });
//            thread.start();
//        }
//    }

//    //【不设置锁】
//    public static void main(String[] args) {
//        for (int i = 0; i < 3; i++) {
//
//            Thread thread = new Thread(new Runnable() {
//                @Override
//                public void run() {
//                    while (num < 1000) {
//                        System.out.println("thread name:" + Thread.currentThread().getName() + ":" + num++);
//                    }
//
//
//                }
//            });
//            thread.start();
//        }
//    }
}
